TORQ SDK 介绍
TORQ 简介
TORQ (Tensor-Optimized Runtime for Quantization) 可以帮助用户快速进行 AI 模型转换、推理和性能评估,将 AI 模型部署到知合计算系列芯片。
支持硬件平台
TORQ 适用如下硬件平台:
| 支持硬件平台 |
|---|
| A200 |
| A210 |
TORQ 工具链介绍
TORQ 工具链总体工作流程如下。
-
运行 TORQ-Toolkit 工具,将训练好的模型转换为 TORQ 模型。
-
使用 TORQ C API 将 TORQ 模型部署在开发板上。
软件栈整体的框架如下:

TORQ-Toolkit 功能介绍
TORQ-Toolkit 是为用户提供在计算机上进行模型转换、推理和性能评估的开发套件。TORQ-Toolkit 的主要功能框图如下。

通过该工具提供的 Python 接口可以便捷地完成以下功能:
-
模型转换。
支持将 ONNX、TensorFlow、TensorFlow Lite、Caffe 等模型直接转换为 TORQ 模型。 其他框架(如 PyTorch)可先导出为 ONNX 格式,再进行 TORQ 模型转换。
-
量化功能。
支持将浮点模型量化为定点模型。
-
模型推理。
-
将 TORQ 模型分发到指定的 NPU 设备上进行推理并获取推理结果。
-
在计算机上仿真 NPU 运行 TORQ 模型并获取推理结果。
-
-
性能和内存评估。
将 TORQ 模型在模拟器上运行,以评估模型在实际设备上运行时的性能和内存占用情况。
TORQ Runtime 功能介绍
TORQ Runtime 负责加载 TORQ 模型,并调用 NPU 驱动实现在 NPU上推理 TORQ 模型。推理 TORQ 模型包括原始数据输入预处理、NPU 运行模型、输出后处理三项流程。
根据不同模型输入格式和量化方式, TORQ Runtime 提供通用 API 和零拷贝 API 两种处理流程。
说明
- 当用户输入数据只有虚拟地址时,只能使用通用 API 接口。
- 当用户输入数据有物理地址或 fd 时,两组接口都可以使用。

-
通用 API 推理:推 理简洁、无门槛,易于使用。
-
数据的归一化、量化、数据排布格式转换、反量化等在 CPU 上运行。
-
模型本身的推理在 NPU 上运行。
-
-
零拷贝 API 推理:对输入数据流程处理效率比通用 API 高。
零拷贝 API 支持数据在不同的 IP 核之间流动,没有数据拷贝,以减少 CPU 及 DDR 带宽消耗。零拷贝API支持直接将camera 或者解码出来的数据导入到 NPU 中使用。
-
归一化、量化和模型推理在 NPU 上运行。
-
NPU 输出的数据排布格式和反量化过程在 CPU 或者 NPU 上运行。
-
TORQ 开发流程介绍
完整的 TORQ 开发流程可确保人工智能模型能够成功转换、评估,最终在 UCA 上高效部署。具体开发流程如下图。

-
模型转换:原始深度学习模型转化为 TORQ 格式,后续在 UCA 平台上推理。
a. 获取原始模型。
获取或训练深度学习模型。建议使用 ONNX 或 TensorFlow 主流框架。
b. 模型配置。
配置归一化参数、量化参数和目标平台等参数。
c. 模型加载。
根据模型框架选择加载接口将模型导入 TORQ-Toolkit。
d. 模型构建。
torq.build()接口构建 TORQ 模型。e. 模型导出。
torq.export_torq()接口将 TORQ 模型 导出成目录(.torq 后缀),用于后续部署。 -
模型评估:评估模型推理结果的推理性能和内存占用等关键指标。
-
性能评估:
torq.eval_perf()接口分析模型在 UCA 平台上的算力需求,提升推理性能。 -
内存评估:
torq.eval_memory()接口了解模型在 UCA 平台上的内存使用情况,最小化内存占用。
-
-
板端部署运行:模型的实际部署和运行。
a. 模型初始化:加载 TORQ 模型到 UCA 平台。
b. 模型前处理:加载待推理数据到 UCA 平台。
c. 模型推理:输入数据传递给模型并获取推理结果。
d. 模型后处理:获取推理结果进行后处理,并传给应用端。
e. 模型释放:在完成推理流程后,释放模型资源。
缩略词和术语
| 术语/缩略词 | 说明 |
|---|---|
| TORQ 模型 | 知合系列芯片专用的神经网络模型格式,后缀名为 .torq,用于在知合NPU高效运行AI推理任务,方便用户开发AI产品。 |
| UCA | 全称 Unify Computer Architecture,知合多媒体 HAL 层接口。 |
| NATIVE_LAYOUT | 指对于 NPU 运行时而言,通常性能表现最佳的内存排列格式。 |
| tensor | 张量。在深度学习中,为高阶数组的数据,用于表示不同维度的数据。 |
| fd | 文件描述符,被用来标识一块内存空间。 |
开发环境准备
关于 TORQ-Toolkit 的安装方式和设备端 NPU 环境准备,请参考 TORQ-Toolkit 快速上手。
TORQ 使用说明
模型转换
在模型转换环节,用户可以使用不同框架的深度学习模型训练或获取预训练模型,并转换为 TORQ 格式,以便在 UCA 上部署和推理。
这些接口涵盖了 TORQ-Toolkit 模型转换阶段,根据不同的需求和应用场景,用户可以选择不同的模型配置和量化算法进行自定义设置,方便后续进行部署。模型转换流程如下图所示。

TORQ-Toolkit 模型转换支持的主流深度学习框架版本如下。
| 深度学习框架 | 支持版本 |
|---|---|
| Caffe | 1.0 |
| TensorFlow | 1.15 |
| TensorFlow Lite (TF Lite) | 2.4 |
| ONNX | 1.7.0~ 1.12.0 |